home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
90xx
/
9001a.d64
/
sub dir sys 1.2
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
12KB
|
556 lines
100 REM ******************
110 REM * *
120 REM * SUB DIR SYSTEM *
130 REM * 64'ER 2/89 S36 *
140 REM ******************
150 REM
160 REM (C) 1988 BY
170 REM DIRK JANSEN
180 REM
190 REM VER 1.1 - 21.07.88
200 REM ==================
210 :
220 PRINT CHR$(147)
230 PRINT TAB(13);"SUB DIR SYSTEM"
240 PRINT
250 PRINT TAB(13);"V1.1 21.07.88"
260 PRINT
270 PRINT TAB(8);"(C) 1988 BY DIRK JANSEN"
280 PRINT
282 PRINT TAB(5);"ENLARGED 1989 BY HORST STIELER"
284 PRINT
290 PRINT"========================================"
300 GOSUB 4000:REM * GERAETE NUMMERN ABFRAGEN
310 NU$=CHR$(0): RESTORE: FOR I=0 TO 7: READ BY$: NEXT I
312 D0$=STR$(0)+STR$(5)+STR$(35)
314 D1$=""
316 FOR I=1 TO 17: READ BY: D1$=D1$+STR$(BY): NEXT I
318 READ BY
320 D2$=""
322 FOR I=19 TO 22: READ BY: D2$=D2$+STR$(BY): NEXT I
324 READ BY
326 D3$=""
328 FOR I=24 TO 35: READ BY: D3$=D3$+STR$(BY): NEXT I
329 RESTORE
330 GOSUB 44650
332 DIM FE$(29),FT$(4),FS$(3)
334 FT$(0)="DEL": FT$(1)="SEQ": FT$(2)="PRG": FT$(3)="USR": FT$(4)="REL"
335 DIM BA(35,4)
340 PRINT CHR$(147)
350 PRINT"***** SUB DIR SYSTEM V 1.1 *****"
360 PRINT
370 PRINT "GERAET:";U,"LAUFWERK: ";D$
380 PRINT:PRINT
390 PRINT" 1 - SUB DIR SYSTEM ANLEGEN"
400 PRINT
410 PRINT" 2 - SUB DIR ANLEGEN"
420 PRINT
430 PRINT" 3 - DISK BEFEHL"
440 PRINT
450 PRINT" 4 - INHALTSVERZEICHNIS"
460 PRINT
470 PRINT" 5 - GERAETE NUMMERN AENDERN"
480 PRINT
481 PRINT" 6 - DIRECTORYS LISTEN/DRUCKEN"
482 PRINT
483 PRINT" 7 - DISKETTE VALIDIEREN"
484 PRINT
485 PRINT" 8 - SUB DIR LOESCHEN"
486 PRINT
490 PRINT" 0 - PROGRAMM ENDE"
500 PRINT:PRINT
510 INPUT"IHRE WAHL";O
520 ON O+1 GOSUB 1000,10000,20000,2000,3000,4000,41050,41420,42000
530 GOTO 340
970 :
980 REM *** ENDE ***
990 :
1000 SYS 64738
1970 :
1980 REM *** DISK BEFEHL ***
1990 :
2000 PRINT
2010 POKE 198,3
2020 POKE 631,34
2030 POKE 632,20
2040 POKE 633,34
2050 A$=""
2060 INPUT"BEFEHL";A$
2070 OPEN 15,U,15
2080 IF A$="" THEN 2200
2090 PRINT#15,A$
2200 PRINT
2210 PRINT"STATUS: ";
2220 GET#15,E$: IF E$<>CHR$(13) THEN PRINTE$;: GOTO 2220
2230 CLOSE15
2240 PRINT:PRINT:PRINT"- TASTE DRUECKEN -"
2250 GET A$: IF A$="" THEN 2250
2260 RETURN
2970 :
2980 REM *** INHALTSVERZEICHNIS ***
2990 :
3000 PRINT
3010 OPEN 1,U,0,"$"+D$
3020 POKE 781,1
3040 GET#1,A$,A$
3050 GET#1,A$,A$: IF ST=64 THEN 3110
3060 : GET#1,A$,B$:PRINTCHR$(157);ASC(A$+CHR$(0))+256*ASC(B$+CHR$(0));
3070 : GET#1,A$:PRINT A$;: IF A$<>"" THEN 3070
3080 : PRINT
3090 GOTO 3050
3110 CLOSE 1
3120 PRINT:PRINT:PRINT"- TASTE DRUECKEN -"
3130 GET A$: IF A$="" THEN 3130
3140 RETURN
3970 :
3980 REM *** GERAETE NUMMERN AENDERN ***
3990 :
4000 PRINT
4010 INPUT"GERAETE NUMMER? 8[157][157][157]";U
4020 IF U<8 OR U>15 THEN 4010
4030 INPUT"LAUFWERK ? 0[157][157][157]";D$
4040 IF D$<>"0" AND D$<>"1" THEN 4030
4050 RETURN
9970 :
9980 REM *** SYSTEM ANLEGEN ***
9990 :
10000 OPEN 15,U,15,"I"+D$
10010 INPUT#15,E1,E2$,E3,E4
10020 IF E1=0 THEN 10100
10030 PRINT
10040 PRINT"*** DISK: ";E1;E2$;E3;E4;"***"
10050 PRINT
10060 RETURN
10100 OPEN 2,U,2,"#"
10110 PRINT#15,"U1 2 ";D$;" 18 1"
10112 FOR I=2 TO 226 STEP 32
10120 : PRINT#15,"B-P 2";I
10130 : GET#2,T$
10150 : IF T$<>"" THEN 10170
10160 NEXT I
10162 PRINT#15,"B-P 2 0"
10164 GET#2,T$
10166 IF T$="" THEN 10220
10170 : PRINT
10180 : PRINT"*** DISK IST NICHT LEER ***"
10190 : PRINT
10200 : INPUT"DISK LOESCHEN(J/N)? N[157][157][157]";A$
10210 : IF A$="N" THEN CLOSE2:CLOSE15: RETURN
10220 : PRINT:PRINT"IMPRESSUM SCHREIBEN"
10222 PRINT#15,"B-P 2 00"
10230 PRINT#2,CHR$(0);CHR$(255);
10240 FOR I=0 TO 7
10242 : PRINT#15,"B-P 2";I*32+2
10250 : PRINT#2,CHR$(195);CHR$(18);CHR$(0);
10260 : READ A$
10270 : PRINT#2,LEFT$(A$+"[160][160][160][160][160][160][160][160][160][160][160][160][160][160][160]",16);
10280 : PRINT#2,CHR$(0);CHR$(0);CHR$(0);
10290 : PRINT#2,"DIRK";
10300 : PRINT#2,CHR$(0);CHR$(0);
10310 : PRINT#2,CHR$(0);CHR$(0);
10320 NEXT I
10330 PRINT#15,"U2 2 ";D$;" 18 01"
10340 PRINT:PRINT"ROOT DIR ANLEGEN"
10350 CLOSE2
10360 CLOSE15
10370 N$="======ROOT======":REM -NAMEUEBERGEBEN
10380 GOSUB 30000:REM - DIR ANLEGEN
10470 OPEN15,U,15
10480 PRINT:PRINT"INIT DISK"
10490 PRINT#15,"I";D$
10500 PRINT:PRINT"VALIDATE DISK"
10510 PRINT#15,"V";D$
10520 CLOSE15
10530 RETURN
10662 PRINT#15,"B-P 2 0"
10664 GET#2,T$
10666 IF T$<>"" THEN 10180
12000 DATA " SUB DIR SYSTEM "
12010 DATA "(W) '88 D.JANSEN"
12020 DATA " "
12030 DATA "USE DISK COMMAND"
12040 DATA " &XXXXXX TO "
12050 DATA " CHANGE DIR "
12060 DATA " "
12070 DATA " DON'T VALIDATE "
19970 :
19980 REM *** DIR ANLEGEN ***
19990 :
20000 PRINT
20010 N$="":INPUT"DIR NAME (MAX 15 ZEICHEN)";N$
20020 IF LEN(N$)>15 OR LEN(N$)<1 THEN 20010
20030 N1$=N$
20040 IF LEN(N$)<16 THEN N$="="+N$+"=":GOTO 20040
20050 N$=LEFT$(N$,16)
21000 PRINT:PRINT"DIR ANLEGEN"
21010 GOSUB 30000:REM - DIR ANLEGEN
21900 RESTORE
21910 FOR I=0 TO 7
21920 : READ A$
21930 NEXT I
22000 PRINT:PRINT"UMSCHALT BEFEHL ANLEGEN T:";T;" S:";S
22010 OPEN2,U,2,"&"+N1$+",U,W"
22020 PRINT#2,CHR$(0);CHR$(5);:REM - STARTADRESSE
22030 PRINT#2,CHR$(35);:REM - ANZAHL BYTES
22040 P=0
22050 FOR I=1 TO 35
22060 : READ A
22070 : IF A=-1 THEN A=T
22080 : IF A=-2 THEN A=S
22090 : P=P+A: IF P>255 THEN P=P-255
22100 : PRINT#2,CHR$(A);
22110 NEXT I
22120 P=P+5+35
22130 P=P-(255*INT(P/256))
22140 PRINT#2,CHR$(P);
22150 CLOSE2
23000 PRINT:PRINT"UMSCHALTEN"
23010 OPEN15,U,15
23020 OPEN 2,U,2,"#"
23030 PRINT#15,"U1 2 ";D$;" 18 01"
23040 PRINT#15,"B-P 2 0"
23050 GET#2,T$,S$
23060 T=ASC(T$+CHR$(0))
23070 S=ASC(S$+CHR$(0))
23080 CLOSE2
23090 PRINT#15,"&"+N1$
23100 CLOSE15
23900 RESTORE
23910 FOR I=0 TO 7
23920 : READ A$
23930 NEXT I
24000 PRINT:PRINT"RUECKSCHALT BEFEHL ANLEGEN T:";T;" S:";S
24010 OPEN2,U,2,"&BACK,U,W"
24020 PRINT#2,CHR$(0);CHR$(5);:REM - STARTADRESSE
24030 PRINT#2,CHR$(35);:REM - ANZAHL BYTES
24040 P=0
24050 FOR I=1 TO 35
24060 : READ A
24070 : IF A=-1 THEN A=T
24080 : IF A=-2 THEN A=S
24090 : P=P+A: IF P>255 THEN P=P-255
24100 : PRINT#2,CHR$(A);
24110 NEXT I
24120 P=P+5+35
24130 P=P-(255*INT(P/256))
24140 PRINT#2,CHR$(P);
24150 CLOSE2
25000 PRINT:PRINT"RUECKSCHALTEN"
25010 OPEN15,U,15
25020 PRINT#15,"&BACK"
25030 CLOSE15
25040 RETURN
29970 :
29980 REM *** DIR ANLEGEN ***
29990 :
30000 OPEN15,U,15
30010 OPEN 2,U,2,"#"
30020 PRINT#15,"U1 2 ";D$;" 18 01"
30030 PRINT#15,"B-P 2 0"
30040 GET#2,T$
30050 T1=ASC(T$+CHR$(0))
30070 PRINT#15,"B-A ";D$;" 18 00"
30080 INPUT#15,A,A$,T,S
30090 PRINT#15,"B-A ";D$;T;S
30100 PRINT#15,"B-P 2 00"
30110 PRINT#2,CHR$(0);CHR$(255);
30120 PRINT#2,CHR$(195);CHR$(18);CHR$(0);
30130 PRINT#2,LEFT$(N$+"[160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160]",16);
30140 PRINT#2,CHR$(0);CHR$(0);CHR$(0);
30150 PRINT#2,"DIR ";
30160 PRINT#2,CHR$(0);CHR$(0);
30170 PRINT#2,CHR$(0);CHR$(0);
30180 PRINT#2,CHR$(0);CHR$(0);
30260 FOR I=34 TO 253
30270 : PRINT#2,CHR$(0);
30280 NEXT I
30300 PRINT#15,"U2 2 ";D$;T;S
30310 IF T1=18 THEN 30500
30320 : PRINT#15,"U1 2 ";D$;" 18 01"
30330 : PRINT#15,"B-P 2 0"
30340 : PRINT#2,CHR$(T);CHR$(S);
30350 : PRINT#15,"U2 2 ";D$;" 18 01"
30500 CLOSE15
30510 CLOSE2
30520 RETURN
39970 :
39980 REM *** DATEN FUER & FILE ***
39990 :
40000 DATA 169,18,133,8,169,1,133,9,169,128,133,1,165,1,48,252,169,-1,141,0,4
40010 DATA 169,-2,141,1,4,169,144,133,1,165,1,48,252,96
41000 :
41010 REM *****************************
41020 REM * DIRECTORYS LISTEN/DRUCKEN
41030 REM *
41050 DR=B0
41060 PRINT"AUSGABE AUCH AUF DRUCKER ? (J/N)"
41070 GET BY$: IF BY$="" THEN 41070
41080 IF BY$<>"J" THEN 41140
41090 PRINT"GERAETEADRESSE (4/5) ?": BY$=""
41100 GET BY$:IF BY$="" THEN 41100
41110 PR=VAL(BY$): IF PR>=4 AND PR<=5 THEN DR=B1: OPEN4,PR: GOTO 41140
41120 PRINT"GERAETEADRESSE IST NICHT 4 ODER 5": GOTO 41320
41140 HE=1
41150 OPEN15,U,15
41160 OPEN2,U,2,"#"
41190 PRINT#15,"U1 2 ";D$;" 18 0"
41200 PRINT#15,"B-P 2 144"
41210 DN$="": FOR I=144 TO 159: GET#2,BY$: DN$=DN$+BY$: NEXT I: GET#2,BY$,BY$
41220 ID$="": FOR I=162 TO 166: GET#2,BY$: ID$=ID$+BY$: NEXT I
41230 UE$=" 0 "+CHR$(34)+DN$+CHR$(34)+" "+ID$+"[146]"
41250 DE=0
41260 GOSUB 42610
41280 PRINT#15,"M-R"CHR$(250)CHR$(2)CHR$(3)
41290 GET#15,LO$,BY$,HI$
41300 PRINT 256*ASC(HI$+NU$)+ASC(LO$+NU$);" BLOCKS FREE."
41310 IF DR=B1 THEN PRINT#4,256*ASC(HI$+NU$)+ASC(LO$+NU$);" BLOCKS FREE."
41320 CLOSE 2
41330 CLOSE 15
41340 IF DR=B1 THEN DR=B0: PRINT#4: CLOSE 4
41350 GOSUB 2240
41360 RETURN
41380 REM *****************************
41390 REM * DISKETTE VALIDIEREN
41400 REM *
41420 HE=2
41430 OPEN15,U,15
41440 OPEN2,U,2,"#"
41480 PRINT#15,"R:&BACK=&BACK"
41490 INPUT#15,E1,BY$,BY,BY
41500 IF E1=62 THEN 41560
41510 PRINT"WORKING-DIRECTORY IST NICHT DIE ROOT-"
41520 PRINT"DIRECTORY"
41530 CLOSE 2: GOSUB 2240: GOTO 41930
41560 FOR I=1 TO 35
41570 FOR J=2 TO 4
41580 BA(I,J)=255
41590 NEXT J
41600 NEXT I
41620 GOSUB 44480
41640 DE=0
41650 GOSUB 42610
41680 PRINT"BERECHNUNG DER FREIEN BLOECKE PRO SPUR"
41690 FOR I=1 TO 35
41700 EI=0
41710 FOR J=2 TO 4
41720 DZ=BA(I,J)
41730 DZ=DZ/2: IF DZ<>INT(DZ) THEN EI=EI+1
41740 DZ=INT(DZ): IF DZ>0 THEN 41730
41750 NEXT J
41760 BA(I,1)=EI: PRINT".";
41770 NEXT I
41790 CLOSE 2
41810 PRINT: PRINT"SCHREIBEN DER BAM"
41820 FOR I=1 TO 35
41830 PRINT#15,"M-W"CHR$(4*I)CHR$(7)CHR$(2)CHR$(BA(I,1))CHR$(BA(I,2))
41840 PRINT#15,"M-W"CHR$(4*I+2)CHR$(7)CHR$(2)CHR$(BA(I,3))CHR$(BA(I,4))
41850 NEXT I
41880 PRINT#15,"M-W"CHR$(14)CHR$(0)CHR$(2)CHR$(18)CHR$(0)
41890 PRINT#15,"M-W"CHR$(4)CHR$(0)CHR$(1)CHR$(144)
41900 PRINT#15,"M-R"CHR$(4)CHR$(0): GET#15,BY$: IF BY$=CHR$(144) THEN 41900
41920 PRINT#15,"I";D$
41930 CLOSE 15
41940 RETURN
41960 REM *****************************
41970 REM * DELETE DIR
41980 REM *
42000 OPEN15,U,15
42010 OPEN2,U,2,"#"
42020 GET#2,BY$: PN=ASC(BY$+NU$)
42040 INPUT"ZU LOESCHENDES DIRECTORY";DI$
42050 DI$="&"+DI$
42060 IF LEN(DI$)>16 THEN PRINT"NAME ZU LANG": GOSUB2240: GOTO 42480
42090 PRINT"DIRECTORY WECHSELN"
42100 PRINT#15,DI$
42110 INPUT#15,E1,E2$,E3,E4
42120 IF E1<>0 THEN PRINT E1,E2$,E3,E4: GOSUB 2240: GOTO 42480
42210 AN=1: DE=1: ZE=0: AZ=0: RK=0: AK=3
42220 GOSUB 43350
42230 IF RK=0 THEN 42290
42240 PRINT"SUBDIRECTORY IST NICHT LEER"
42250 PRINT#15,"&BACK"
42260 GOSUB 2240: GOTO 42480
42290 PRINT"DIRECTORYUEBERSCHRIFT LOESCHEN"
42300 PRINT#15,"U1 2 ";D$;STR$(T1);STR$(S1)
42310 PRINT#15,"M-W"CHR$(2)CHR$(PN+3)CHR$(1)CHR$(0)
42320 PRINT#15,"U2 2 ";D$;STR$(T1);STR$(S1)
42350 PRINT#15,"U1 2 ";D$;STR$(T2);STR$(S2)
42380 PRINT"'&BACK'-DATEI LOESCHEN"
42390 PRINT#15,"S";D$;":&BACK,U"
42420 PRINT"RUECKSCHALTEN"
42430 PRINT#15,"M-E"CHR$(5)CHR$(PN+3)
42450 PRINT"SUBDIRECTORYEINTRAG LOESCHEN"
42460 PRINT#15,"S";D$;":";DI$
42480 CLOSE 2
42490 CLOSE 15
42500 RETURN
42520 REM *******************************************
42530 REM * DIRECTORYS DRUCKEN / DISKETTE VALIDIEREN
42540 REM *
42610 IF HE=2 THEN AK=2: GOTO 42860
42620 AK=1: AN=1
42660 PRINT SPC(DE);UE$
42670 IF DR=B1 THEN PRINT#4,SPC(DE);UE$
42680 GOSUB 44770: IF P3=B1 THEN 42790
42690 PRINT SPC(DE);" WEG: ";
42700 IF DR=B1 THEN PRINT#4,SPC(DE);" WEG: ";
42710 FOR I=K3 TO SP+1 STEP -1
42720 PRINT MID$(SK$(I),6);
42730 IF DR=B1 THEN PRINT#4,MID$(SK$(I),6);
42740 IF I>SP+1 THEN PRINT"/";: IF DR=B1 THEN PRINT#4,"/";
42750 NEXT I
42760 PRINT: IF DR=B1 THEN PRINT#4
42790 TR=18: SC=1
42800 ZE=0
42810 GOSUB 43350
42820 PRINT: IF DR=B1 THEN PRINT#4
42860 TR=18: SC=1: ZE=0
42870 SA=AK: IF HE=1 THEN AK=2
42880 GOSUB 43350
42890 AK=SA
42900 IF RC=0 THEN 43100
42940 VA$=CHR$(TR)+CHR$(SC)+CHR$(ZE)+CHR$(NT)+CHR$(NS)
42950 FOR I=1 TO 16: Z$=MID$(F$,I,1): IFZ$<>"[160]"THENVA$=VA$+Z$:REM SHIFT-SPACE!
42960 NEXT I
42970 GOSUB 44850
42990 PRINT#15,F$
43000 DE=DE+1
43010 AN=1
43020 IF HE=1 THEN 42660
43050 GOSUB 44480
43060 AN=1
43070 GOTO 42860
43100 GOSUB 44770
43110 IF P3=B1 THEN F$="": RETURN
43140 GOSUB 44940
43150 TR=ASC(MID$(VA$,1,1))
43160 SC=ASC(MID$(VA$,2,1))
43170 ZE=ASC(MID$(VA$,3,1))
43180 NT=ASC(MID$(VA$,4,1))
43190 NS=ASC(MID$(VA$,5,1))
43230 PRINT#15,"&BACK": DE=DE-1: AN=0
43250 ZE=ZE+1
43260 GOTO 42870
43280 REM *****************************
43290 REM * ALLE DIRECTORYEINTRAEGE EINER DIR. ABKLAPPERN
43300 REM *
43350 IF AN=0 THEN 43430
43360 IF DE=0 THEN 43430
43390 PRINT#15,"U1 2 ";D$;" 18 1"
43400 GET#2,TR$,SC$: TR=ASC(TR$+NU$): SC=ASC(SC$+NU$)
43430 PRINT#15,"U1 2 ";D$;TR;SC
43450 GET#2,NT$,NS$: NT=ASC(NT$+NU$): NS=ASC(NS$+NU$)
43480 PRINT#15,"B-P 2 ";ZE*32+2
43490 FOR I=0 TO 29: GET#2,FE$(I): NEXT I
43520 ON AK GOTO 43550,43730,43800
43550 IF ASC(FE$(0)+NU$)=0 THEN 43700
43560 BL=256*ASC(FE$(29)+NU$)+ASC(FE$(28)+NU$)
43570 F$=STR$(BL)
43580 IF BL<100 THEN F$=F$+" "
43590 IF BL<10 THEN F$=F$+" "
43600 F$=F$+" "+CHR$(34)
43610 FOR J=3 TO 18: F$=F$+FE$(J): NEXT J
43620 F$=F$+CHR$(34)+" "
43630 FT=ASC(FE$(0)+NU$)
43640 IF (FT AND 2^7)=0 THEN F$=F$+"*": GOTO 43660
43650 F$=F$+" "
43660 F$=F$+FT$(FT AND 3)
43670 IF FT AND 2^6 THEN F$=F$+"<"
43680 PRINT SPC(DE);F$
43690 IF DR=B1 THEN PRINT#4,SPC(DE);F$
43700 GOTO 43980
43730 GOSUB 44080
43740 IF RC=1 THEN RETURN
43770 GOTO43980
43800 FT=ASC(FE$(0)+NU$)
43810 IF AZ>0 THEN 43880
43820 BL=256*ASC(FE$(29)+NU$)+ASC(FE$(28)+NU$)
43830 IF FT<>195 OR BL<>0 THEN RK=1: RETURN
43850 T1=TR: S1=SC
43860 AZ=1
43870 GOTO 43980
43880 IF FT=0 THEN 43980
43890 IF FT<>131 THEN RK=1: RETURN
43900 IF AZ=2 THEN RK=1: RETURN
43920 F$="": FOR J=3 TO 18: F$=F$+FE$(J): NEXT J
43930 IFF$<>"&BACK[160][160][160][160][160][160][160][160][160][160][160]"THENRK=1:RETURN
43940 T2=ASC(FE$(1)+NU$)
43950 S2=ASC(FE$(2)+NU$)
43960 AZ=2
43980 ZE=ZE+1
43990 IF ZE=8 AND NT=0 THEN RC=0: RETURN
44000 IF ZE=8 THEN TR=NT: SC=NS: ZE=0: GOTO 43430
44010 GOTO 43480
44030 REM *****************************
44040 REM * TEST, OB EINTRAG DIRECTORYEINTRAG
44050 REM *
44080 RC=0
44090 IF (ASC(FE$(0)+NU$) AND 131)<>131 THEN RETURN
44100 IF 256*ASC(FE$(29)+NU$)+ASC(FE$(28)+NU$)<>1 THEN RETURN
44110 IF FE$(3)<>"&" THEN RETURN
44130 F$="": FOR I=3 TO 18: F$=F$+FE$(I): NEXT I
44140 IF F$="&BACK[160][160][160][160][160][160][160][160][160][160][160]" THEN RETURN: REM !! DIES SIND <SHIFT><SPACE>
44180 OPEN3,U,3,F$+",U,R"
44190 FS$(0)=""
44200 FOR I=0 TO 2: GET#3,BY$: FS$(0)=FS$(0)+STR$(ASC(BY$+NU$)): NEXT I
44210 P=0
44220 FS$(1)="": FS$(2)="": FS$(3)=""
44230 FOR I=1 TO 35
44240 GET#3,BY$
44250 IF (I=18) OR (I=23) THEN 44280
44260 Z=-(I>0 AND I<18)-2*(I>18 AND I<23)-3*(I>23 AND I<36)
44270 FS$(Z)=FS$(Z)+STR$(ASC(BY$+NU$))
44280 P=P+ASC(BY$+NU$)
44290 IF P>255 THEN P=P-255
44300 NEXT I
44310 GET#3,BY$
44320 CLOSE 3
44330 P=P+5+35
44340 P=P-(255*INT(P/256))
44350 IF P<>ASC(BY$+NU$) THEN RETURN
44380 IF D0$<>FS$(0) OR D1$<>FS$(1) OR D2$<>FS$(2) OR D3$<>FS$(3) THEN RETURN
44410 RC=1
44420 RETURN
44440 REM *****************************
44450 REM * DIR VALIDIEREN & IN DER COMPUTERBAM BLOECKE BELEGEN
44480 PRINT"VALIDIERE DIRECTORY ";F$
44490 CLOSE 2
44500 PRINT#15,"V";D$
44520 PRINT#15,"M-R"CHR$(4)CHR$(7)CHR$(140)
44530 FOR I=1 TO 35
44540 GET#15,BY$,B2$,B3$,B4$
44550 BA(I,2)=BA(I,2) AND ASC(B2$+NU$)
44560 BA(I,3)=BA(I,3) AND ASC(B3$+NU$)
44570 BA(I,4)=BA(I,4) AND ASC(B4$+NU$)
44580 NEXT I
44590 OPEN2,8,2,"#"
44600 RETURN
44620 REM *****************************
44630 REM * INIT-STACK
44640 REM *
44650 K3=20
44660 DIM SK$(K3)
44670 SP=K3
44680 B0=0
44690 B1=-1
44700 RETURN
44720 REM *****************************
44730 REM * EMPTY-STACK
44760 REM *
44770 P3=B0
44780 IF SP=K3 THEN P3=B1
44790 RETURN
44810 REM *****************************
44820 REM * PUSH
44840 REM *
44850 IF SP<0 THEN PRINT"STACK OVERFLOW": CLOSE 2: CLOSE 15: END
44860 SK$(SP)=VA$
44870 SP=SP-1
44880 RETURN
44900 REM *****************************
44910 REM * POP
44930 REM *
44940 SP=SP+1
44950 VA$=SK$(SP)
44960 RETURN